package model

import (
	"gorm.io/gorm"
	"time"
)

// User 用户表
type User struct {
	Id        uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	Account   string         `gorm:"column:account;type:varchar(30);comment:账号;not null;" json:"account"`                                      // 账号
	Password  string         `gorm:"column:password;type:char(32);comment:密码;not null;" json:"password"`                                       // 密码
	FansNum   uint           `gorm:"column:fans_num;type:int UNSIGNED;comment:粉丝数量;not null;default:0;" json:"fans_num"`                       // 粉丝数量
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
	UpdatedAt time.Time      `gorm:"column:updated_at;type:datetime(3);comment:更新时间;not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"` // 更新时间
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:删除时间;default:NULL;" json:"deleted_at"`                          // 删除时间
}

func (u *User) TableName() string {
	return "user"
}

// Fans 粉丝表
type Fans struct {
	Id        uint           `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	UserId    uint           `gorm:"column:user_id;type:bigint UNSIGNED;comment:用户id;not null;default:0;" json:"user_id"`                      // 用户id
	FansId    uint           `gorm:"column:fans_id;type:bigint UNSIGNED;comment:粉丝id;not null;default:0;" json:"fans_id"`                      // 粉丝id
	CreatedAt time.Time      `gorm:"column:created_at;type:datetime(3);comment:开播时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 开播时间
	DeletedAt gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);comment:结束时间;default:NULL;" json:"deleted_at"`                          // 结束时间
}

func (f *Fans) TableName() string {
	return "fans"
}

// Notice 通知表
type Notice struct {
	Id            uint      `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	SendUserId    uint      `gorm:"column:send_user_id;type:bigint UNSIGNED;comment:发送通知的用户id;not null;default:0;" json:"send_user_id"`       // 发送通知的用户id
	ReceiveUserId uint      `gorm:"column:receive_user_id;type:bigint UNSIGNED;comment:接收通知的用户id;not null;default:0;" json:"receive_user_id"` // 接收通知的用户id
	Content       string    `gorm:"column:content;type:varchar(50);comment:通知内容;not null;" json:"content"`                                    // 通知内容
	CreatedAt     time.Time `gorm:"column:created_at;type:datetime(3);comment:创建时间;not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"` // 创建时间
}

func (n *Notice) TableName() string {
	return "notice"
}
